home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / kowin / font / tcwin24s.lzh / tc_put1.c < prev    next >
C/C++ Source or Header  |  1993-04-05  |  2KB  |  119 lines

  1. /*/ ******************************************************************* /*/
  2. /*/                                    /*/
  3. /*/       TC_WIN.win    version 1.00    小笠原博之 SPS0783 COR.    /*/
  4. /*/                                    /*/
  5. /*/ ******************************************************************* /*/
  6.  
  7. #include    <stdio.h>
  8. #include    <wlib.h>
  9. #include    <parts.h>
  10.  
  11. Sheet    put1chbuf= {
  12.         24,
  13.         24,
  14.         2
  15.     };
  16.  
  17. extern    char    *tcfont;
  18. extern        UskMes();
  19.  
  20. put1char( wp, x, y, font )
  21. WindowID    wp;
  22. int        x,
  23.         y;
  24. unsigned short    *font;
  25. {
  26.     int        i;
  27.     unsigned char    *bp= (unsigned char*)(tcfont+ y*(72*16)+ x*3),
  28.             *fp= (unsigned char*)font,
  29.             ffb[4*24];
  30.     DrawBuf        dbuf[1];
  31.  
  32.     put1chbuf.buf2=
  33.     put1chbuf.buf1= (short*)ffb;
  34.  
  35.     for( i= 0 ; i< 24 ; i++ ){
  36.         ffb[i*4+0]= fp[i*3+0];
  37.         ffb[i*4+1]= fp[i*3+1];
  38.         ffb[i*4+2]= fp[i*3+2];
  39.         ffb[i*4+3]= 255;
  40.     }
  41.  
  42.     DrawSetPut( dbuf, x*24, y*24, &put1chbuf );
  43.     WindowDraw( wp, dbuf, 1 );
  44.  
  45.     for( i= 0 ; i< 24 ; i++, bp+= 48 ){
  46.         bp[0]= *fp++;
  47.         bp[1]= *fp++;
  48.         bp[2]= *fp++;
  49.     }
  50. /*
  51.     for( i=0 ; i<16 ; i++, bp+=16 )
  52.         *bp= font[i];
  53. */
  54. }
  55.  
  56. del1char( wp, x, y )
  57. WindowID    wp;
  58. int        x,
  59.         y;
  60. {
  61.     unsigned short    buf[48];
  62.     memset( buf, 255, 96 );
  63.     put1char( wp, x, y, buf );
  64. }
  65.  
  66. get1char( x, y, font )
  67. int        x,
  68.         y;
  69. unsigned short    *font;
  70. {
  71.     int        i;
  72. /*    unsigned short    *bp= (unsigned short*)(tcfont+ y*512+ x*2);*/
  73.     unsigned char    *bp= (unsigned char*)(tcfont+ y*(72*16)+ x*3),
  74.             *fp= (unsigned char*)font;
  75. /*    for( i=0 ; i<16 ; i++, bp+=16 )
  76.         *font++ = *bp;*/
  77.     for( i= 0 ; i< 24 ; i++, bp+= 48 ){
  78.         *fp++= bp[0];
  79.         *fp++= bp[1];
  80.         *fp++= bp[2];
  81.     }
  82. }
  83.  
  84. fontcode( wp, info )
  85. WindowID    wp;
  86. EventInfo    *info;
  87. {
  88.     int        x,
  89.             y;
  90.     unsigned int    code;
  91.     char        str[80];
  92.     extern    char    fname[];
  93.  
  94.     if( (info->x/24) >= 16 )
  95.         return;
  96.     x= (info->x)/24;
  97.     y= (info->y)/24;
  98.  
  99.     code= y*16 + x;
  100.  
  101.     if( code < 256 ){
  102.         sprintf( str, "ASCII:%02X (%3d)  %s", code, code, fname );
  103.     }else{
  104.         int    low;
  105.         code -= 256;
  106.         low= (code % 188)+ 0x40;
  107.         code= ( code/188 + 0x81 ) << 8;
  108.         if( low >= 0x7f )
  109.             low++;
  110.         code+= low;
  111.         if( code >= 0xa040 )
  112.             code+= 0x4000;
  113.         low= SFTJIS( code );
  114.         sprintf( str, "%04X-%04X-%02d%02d  %s", code, low, (low/256)-32, (low&255)-32, fname );
  115.     }
  116.     UskMes( str, WindowGetParent(wp) );
  117. }
  118.  
  119.